#ifndef STARFIELD_H
#define STARFIELD_H

#include <QtCore>
#include <vector>

#include "tools.h"

class Starfield : public QObject
{
Q_OBJECT

public:
	// Construit un starfield contenant *size* �toiles
	Starfield(const int size=100, const int delay=70);

	// Dessine le starfield sur la surface s avec la couleur col
	void drawStarfield(SDL_Surface *s, Uint32 col) const;

signals:
	void starfieldUpdated();

// Type de donn�e n�cessaire
private:
	struct Star
	{
		float x, y, z;
	};
	typedef std::vector<Star> StarFieldContent;

private:
	// Cr�e une nouvelle �toile avec des coordonn�es al�atoires
	Star generateStar() const;

	// Initialise le starfield avec autant d'�toiles que demand� dans le constructeur
	void initStarfield();

private slots:
	// Mise � jour de la position de chaque �toile et cr�ation des �toiles "mortes"
	// (celle dont la profondeur vient de passer � 0)
	void updateStarfield();

private:
	StarFieldContent starfield;
	QTimer *timer;
};

#endif
